
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Enumeration;

public class GravaCadastros extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException, ClassNotFoundException {
        ArrayList arrayValores = new ArrayList();
        ArrayList arrayNomes = new ArrayList();
        Enumeration parametros = request.getParameterNames();
        while (parametros.hasMoreElements()) {
            String nomeParametro = (parametros.nextElement().toString());
            arrayNomes.add(nomeParametro);
            arrayValores.add((request.getParameter(nomeParametro)).toString());
        }
        Persiste p = new Persiste();
        String[] mapeadores ={"MapeadorSolicitacaoCompra", "MapeadorProposta", "MapeadorOrdemDeCompra",
            "MapeadorProduto", "MapeadorFornecedor", "MapeadorTransportadora", "MapeadorUsuario",
            "MapeadorFamilia", "MapeadorUnidade", "MapeadorCidade", "MapeadorEstados"};
        ArrayList aList= new ArrayList();
        for (int i=0;i<mapeadores.length;i++){
            aList.add(mapeadores[i]);
        }
        Boolean resultadoOperacao=false;
        switch (aList.indexOf(request.getParameter("mapeador"))) {
            case 0: {
                resultadoOperacao=p.persisteSolicitacao(arrayNomes, arrayValores);
                break;
            }
            case 1: {
                resultadoOperacao=p.persisteProposta(arrayNomes, arrayValores);
                break;
            }
            case 2: {
                resultadoOperacao=p.persisteOrdemDeCompra(arrayNomes, arrayValores);
                break;
            }
            case 3: {
                resultadoOperacao=p.persisteProduto(arrayNomes, arrayValores);
                break;
            }
            case 4: {
                resultadoOperacao=p.persisteFornecedor(arrayNomes, arrayValores);
                break;
            }
            case 5: {
                resultadoOperacao=p.persisteTransportadora(arrayNomes, arrayValores);
                break;
            }
            case 6: {
                resultadoOperacao=p.persisteUsuario(arrayNomes, arrayValores);
                break;
            }
            case 7: {
                resultadoOperacao=p.persisteFamilia(arrayNomes, arrayValores);
                break;
            }
            case 8: {
                resultadoOperacao=p.persisteUnidade(arrayNomes, arrayValores);
                break;
            }
            case 9: {
                resultadoOperacao=p.persisteCidade(arrayNomes, arrayValores);
                break;
            }
            case 10: {
                resultadoOperacao=p.persisteEstado(arrayNomes, arrayValores);
                break;
            }
        }
        if (resultadoOperacao) {
                request.getRequestDispatcher("/Sucesso.jsp").forward(request, response);
            } else {
                request.getRequestDispatcher("/Erro.jsp").forward(request, response);
            }
    }

// <editor-fold defaultstate="collapsed" desc="Métodos HttpServlet. Clique no sinal de + à esquerda para editar o código.">
    /**
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException,
            IOException {
        try {
            processRequest(request, response);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(GravaCadastros.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException,
            IOException {
        try {
            processRequest(request, response);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(GravaCadastros.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
    }
